package notes.java.concurrent;

import java.util.Iterator;
import java.util.Vector;

/**
 *  -单线程中，Vector的操作建议使用for循环
 *  foreach和iterator都是有问题的
 */
public class T9_Vector2 {
	
	// foreach 方式删除元素
	// 抛出异常java.util.ConcurrentModificationException
	private static void testForEach(Vector<Integer> v) {
		for(Integer i : v) {
			if(i == 3) {
				v.remove(i);
			}
		}
	}
	
	// 迭代器方式删除元素
	// 抛出异常 java.util.ConcurrentModificationException
	private static void testIterator(Vector<Integer> v) {
		Iterator<Integer> iterator = v.iterator();
		while(iterator.hasNext()) {
			Integer i = iterator.next();
			if(i == 3) {
				v.remove(i);
			}
		}
	}
	
	// 普通For循环
	// 正常
	private static void testFor(Vector<Integer> v) {
		for (int i = 0; i < v.size(); i++) {
			if(i == 3) {
				v.remove(i);
			}
		}
	}
	
	public static void main(String[] args) {
		Vector<Integer> v = new Vector<>();
		v.add(1);
		v.add(2);
		v.add(3);
		
//		testForEach(v);
//		testIterator(v);
		testFor(v);
	}
}
